Object ক্লাস হল Java এর সবচেয়ে মৌলিক ক্লাস এবং এটি সব ক্লাসের জন্য একটি সুপারক্লাস (superclass) হিসেবে কাজ করে। এটি java.lang প্যাকেজের একটি অংশ এবং Java এর সমস্ত ক্লাসই এটি ইনহেরিট করে। Object ক্লাসের কিছু গুরুত্বপূর্ণ মেথড রয়েছে যা অ্যাপ্লিকেশন ডেভেলপমেন্টে বিভিন্ন পরিস্থিতিতে ব্যবহৃত হয়। এই মেথডগুলো হল:
- getClass()
- notify()
- wait()
- finalize()
1. getClass() Method
getClass() মেথডটি একটি অবজেক্টের ক্লাসের ইনফরমেশন প্রদান করে। এটি একটি Class অবজেক্ট রিটার্ন করে, যা সেই অবজেক্টের ক্লাসের তথ্য ধারণ করে।
সিগনেচার:
public final Class<?> getClass()
ব্যাখ্যা:
- এই মেথডটি একটি অবজেক্টের রানটাইম ক্লাসের তথ্য নিয়ে আসে।
- এটি
Objectক্লাসে ডিফাইন করা হওয়ায়, সব Java ক্লাসেই এই মেথডটি ব্যবহৃত হতে পারে। Classঅবজেক্ট ব্যবহার করে আপনি ক্লাসের নাম, প্যাকেজ, সুপারক্লাস ইত্যাদি জানতে পারেন।
উদাহরণ:
public class Example {
public static void main(String[] args) {
String str = "Hello";
Class<?> cls = str.getClass(); // getClass() মেথড ব্যবহার
System.out.println("Class Name: " + cls.getName());
}
}
Output:
Class Name: java.lang.String
2. notify() Method
notify() মেথডটি মাল্টিথ্রেডিং প্রোগ্রামে ব্যবহৃত হয়। এটি একটি থ্রেডকে wait অবস্থায় থেকে জাগ্রত (notify) করে। যখন একটি থ্রেড কোন নির্দিষ্ট অবজেক্টে synchronized block বা method এ থাকে এবং অন্য থ্রেড wait() ব্যবহার করে, তখন notify() থ্রেডটির কাজ আবার শুরু করতে সহায়তা করে।
সিগনেচার:
public final void notify()
ব্যাখ্যা:
notify()একটি থ্রেডকে জাগ্রত করে যা synchronized ব্লকে wait() অবস্থায় ছিল।- এটি শুধুমাত্র synchronized ব্লক অথবা মেথডের মধ্যে কল করা যায়।
উদাহরণ:
class Example {
synchronized void method1() {
System.out.println("Thread1 is running");
notify(); // Notify অন্য থ্রেডকে
}
synchronized void method2() throws InterruptedException {
wait(); // Wait করে থাকবে
System.out.println("Thread2 is running");
}
}
public class NotifyExample {
public static void main(String[] args) throws InterruptedException {
Example obj = new Example();
Thread t1 = new Thread(() -> {
try {
obj.method1();
} catch (Exception e) {
e.printStackTrace();
}
});
Thread t2 = new Thread(() -> {
try {
obj.method2();
} catch (InterruptedException e) {
e.printStackTrace();
}
});
t1.start();
t2.start();
}
}
3. wait() Method
wait() মেথডটি একইভাবে মাল্টিথ্রেডিং প্রোগ্রামে ব্যবহৃত হয়। এটি থ্রেডকে synchronized ব্লকের মধ্যে wait অবস্থায় রাখে, যাতে অন্য কোনো থ্রেড তার কাজ সম্পন্ন করার পর থ্রেডটি আবার চালু হয়। wait() মেথড থ্রেডকে কম্পলিট না হওয়া পর্যন্ত অবরুদ্ধ করে রাখে।
সিগনেচার:
public final void wait() throws InterruptedException
ব্যাখ্যা:
wait()মেথডটি একটি থ্রেডকে ওই অবজেক্টের উপর wait অবস্থায় রাখে যতক্ষণ না অন্য কোনো থ্রেড তার কাজ শেষ করে notify() করে না।- এই মেথডটি শুধুমাত্র synchronized ব্লকের মধ্যে কাজ করে।
উদাহরণ:
class Example {
synchronized void method1() {
try {
System.out.println("Thread1 is running");
wait(); // Wait অবস্থায় চলে যাবে
} catch (InterruptedException e) {
e.printStackTrace();
}
}
synchronized void method2() {
System.out.println("Thread2 is running");
notify(); // Notify থ্রেড 1 কে
}
}
public class WaitExample {
public static void main(String[] args) throws InterruptedException {
Example obj = new Example();
Thread t1 = new Thread(() -> {
try {
obj.method1();
} catch (Exception e) {
e.printStackTrace();
}
});
Thread t2 = new Thread(() -> obj.method2());
t1.start();
t2.start();
}
}
4. finalize() Method
finalize() মেথডটি Java-তে একটি অবজেক্ট garbage collection এর আগে কল করতে পারে। এটি অবজেক্টের ডেস্ট্রাকশন বা ক্লিনআপ অপারেশন সম্পন্ন করার জন্য ব্যবহৃত হয়। তবে, এটি deprecated হতে পারে এবং এটি মূলত গার্বেজ কালেকশন ব্যবস্থার সাথে সম্পর্কিত।
সিগনেচার:
protected void finalize() throws Throwable
ব্যাখ্যা:
finalize()মেথড সাধারণত একটি অবজেক্ট গার্বেজ কালেকশন দ্বারা সরানোর আগে কল করা হয়।finalize()মেথডটি কখন কল হবে তা পূর্বানুমান করা সম্ভব নয়, কারণ এটি গার্বেজ কালেকশন মেকানিজমের উপর নির্ভরশীল।
উদাহরণ:
class MyClass {
protected void finalize() throws Throwable {
System.out.println("Finalizing object");
super.finalize();
}
}
public class FinalizeExample {
public static void main(String[] args) {
MyClass obj = new MyClass();
obj = null; // এখন অবজেক্টটি null, এবং এটি গার্বেজ কালেক্টর দ্বারা মুছে ফেলা হবে।
System.gc(); // গার্বেজ কালেকশন কল করা
}
}
Output:
Finalizing object
Java এর Object ক্লাসের এই মেথডগুলি মাল্টিথ্রেডিং এবং মেমরি ম্যানেজমেন্টে অত্যন্ত গুরুত্বপূর্ণ ভূমিকা পালন করে:
getClass()— অবজেক্টের ক্লাসের ইনফরমেশন পাওয়া যায়।notify()— থ্রেডকে জাগিয়ে তোলে যা wait() অবস্থায় রয়েছে।wait()— থ্রেডকে wait() অবস্থায় রাখে যতক্ষণ না অন্য থ্রেড তাকে notify() করে।finalize()— অবজেক্ট গার্বেজ কালেকশনের আগে কিছু ক্লিনআপ কাজ করতে ব্যবহৃত হয়।
এই মেথডগুলির মাধ্যমে আপনি কোডে থ্রেড সমন্বয় এবং মেমরি ক্লিনআপ করতে সক্ষম হবেন।
Read more